草庐IT

c++ getline和stringstream

全部标签

C++ getline() 不需要命名空间声明

为什么getline()来自本地范围内的headerstring并且可以使用:#include#includeintmain(){std::stringstr;getline(std::cin,str);std::cout这适用于gcc。但为什么?它在headerstring中定义,这应该要求我使用std::getline()而不是getline()。 最佳答案 您正在体验参数相关查找(ADL,也称为Koenig查找)。由于一个或多个参数是std命名空间中定义的类型,因此它会在std命名空间中搜索该函数,而不是搜索其他任何地方。我给

c++ - 差异 : cin. getline() 和 getline(cin, st)

哪个更好,更受欢迎?我真的发现阅读API令人困惑。 最佳答案 成员(member)版读入char*,免费版读入std::string。所以更喜欢免费版!像这样使用它:std::istream&ins=/*...*/;std::stringline;while(std::getline(ins,line)){//processline} 关于c++-差异:cin.getline()和getline(cin,st),我们在StackOverflow上找到一个类似的问题:

c++ - std::stringstream 和 std::ios::binary

我想写入std::stringstream而不进行任何转换,比如行尾。我有以下代码:voiddecrypt(std::istream&input,std::ostream&output){while(input.good()){charc=input.get()c^=mask;output.put(c);if(output.bad()){throwstd::runtime_error("Outputtostreamfailed.");}}}下面的代码就像一个魅力:std::ifstreaminput("foo.enc",std::ios::binary);std::ofstreamou

c++ - 在 C++ 中将 getline() 与文件输入一起使用

我正在尝试用C++完成一个简单的初学者任务。我有一个包含该行的文本文件“约翰·史密斯31”。而已。我想使用ifstream变量读取此数据。但我想将名称“JohnSmith”读入一个字符串变量,然后将数字“31”读入一个单独的int变量。我试过使用getline函数,如下:ifstreaminFile;stringname;intage;inFile.open("file.txt");getline(inFile,name);inFile>>age;cout问题在于它会输出整行“JohnSmith31”。有没有一种方法可以让getline函数在获得名称后停止,然后“重新启动”以检索号码?

C++:const char * 到 stringstream

是否可以将constchar*放入字符串流中?假设size是我的constchar*变量:stringstreams;s.write(temp,size);如何获取尺寸?谢谢。 最佳答案 我测试了它,它工作正常......#include#includeusingnamespacestd;intmain(){stringstreams;constchar*token="HELLO";s 关于C++:constchar*到stringstream,我们在StackOverflow上找到一个

c++ - 为什么我使用getline时cout打印了两次?

我正在尝试使用getline读取一串文本。出于某种原因,它会打印两次“请输入您的选择”:PleaseenteryourselectionPleaseenteryourselection如果我键入无效文本,它会再次循环,此后每次循环只打印一次。while(valid==false){cout有人知道为什么会发生这种情况吗?谢谢 最佳答案 可能当您进入循环时,输入缓冲区中仍有来自上一个操作的内容。它被getline拾取,发现无效,然后循环再次运行。举例来说,假设在进入循环之前,您读取了一个字符。但是,在cooked模式下,您需要输入字符

c++ - 为什么 seekg 不能与 getline 一起使用?

当我在myFile中到达EOF时,Seekg似乎不起作用。ifstreammyFile("/path/file");for(inti;i所以,现在我在每个循环中打开输入流:for(inti;i但我宁愿寻求位置0。我怎样才能做到这一点? 最佳答案 确保在调用myFile.seekg()之前清除错误标志:myFile.clear();设置EOF标志后,您将无法提取任何内容。您必须清除这些标志才能再次提取。 关于c++-为什么seekg不能与getline一起使用?,我们在StackOverf

c++ - stringstream临时ostream返回问题

我正在创建一个包含以下部分的记录器://#defineLOG(x)//forreleasemode#defineLOG(x)log(x)log(conststring&str);log(constostream&str);有了想法去做:LOG("Test");LOG(string("Testing")+"123");stringstreams;LOG(s这一切都按预期工作,但当我这样做时:LOG(stringstream()它不起作用:voidlog(constostream&os){std::streambuf*buf=os.rdbuf();if(buf&&typeid(*buf)=

c++ - std::getline 在遇到 eof 时抛出

std::getline在获取eof时抛出异常。我就是这样做的。std::ifstreamstream;stream.exceptions(std::ifstream::failbit|std::ifstream::badbit);try{stream.open(_file.c_str(),std::ios_base::in);}catch(std::ifstream::failuree){std::cout在上面的代码中,getline在获取eof时抛出异常如何处理这种情况?编辑std::stringbuffer="";while(std::getline(stream,buffer

c++ - getline 的实现(istream& is, string& str )

我的问题很简单,getline(istream,string)是怎么实现的?如何解决像getline(char*s,streamsizen)这样固定大小的char数组的问题?他们是否使用临时缓冲区和多次调用newchar[length]或其他整洁的结构? 最佳答案 getline(istream&,string&)以读取一行的方式实现。它没有明确的实现;每个库可能彼此不同。可能的实现:istream&getline(istream&stream,string&str){charch;str.clear();while(stream.